package com.hj.dapp.business.user.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hj.dapp.business.role.model.Role;
import com.hj.dapp.business.user.model.User;
import com.hj.dapp.business.user.vo.RoleBind;
import com.hj.dapp.business.user.vo.UserInfoVO;
import com.hj.dapp.common.request.PageRequest;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.security.Principal;
import java.util.List;

/**
 * @author 胡奥程
 * @version 1.0
 * @date 2023/12/29
 */
public interface UserService extends UserDetailsService {
    List<User> getUserList();

    void registerUser(User user, Principal principal);

    void validateUserName(String username);

    void deleteUser(String userName, Principal principal);

    void editUser(User user, Principal principal);

    IPage<User> pageUser(PageRequest<User> request);

    UserInfoVO userInfo(Principal principal);

    User getUser(String userId);

    User getUserByUserName(String username);

    List<Role> getRoleList(Long username);

    void bindRoleRel(RoleBind roleBind);

    List<User> getDesignerList();

    User getUserById(Long id);

    List<User> getSupervisorList();

    List<User> getReviewerList();

}
